package mapsdev.impl;

import mapsdev.ContaBancaria;

public class ContaSincronizadaEscrita implements ContaBancaria {

	private final int numero;

	private int saldo;

	public ContaSincronizadaEscrita(int numero, int saldo) {
		super();
		this.numero = numero;
		this.saldo = saldo;
	}

	@Override
	public synchronized void deposita(int quantidade) {
		saldo += quantidade;
	}

	@Override
	public int numeroDaConta() {
		return numero;
	}

	@Override
	public boolean saca(int quantidade) {
		if (saldo >= quantidade) {
			synchronized (this) {
				if (saldo >= quantidade) {
					saldo -= quantidade;
					return true;
				}
			}
		}
		return false;
	}

	@Override
	public int saldo() {
		return saldo;
	}

}
